This is my blog.
动态规划问题中,有一类便是求最长上升子序列和最大公共子序列的问题。如何求长度,如何输出序列,如何优化呢!在阅读之中,我将其总结如下。
LIS
子序列 or 子串
首先我们需要明白子序列和子串的区别。
子串是指连续的一段,而子序列是可以不连续的,但是相对前后的位置是不能改变的。
那接下来我们就开始吧!
dp算法
对于a[t],设max初值为0,在a[1]、a[2]……a[t-1]中找比a[t]小的,不断更新max值,使a[t]=max+1;
二分+贪心
上代码咯!
vector(输出序列)
|
|
LCS
dp算法
设c[i,j]为从i到j范围内最长公共子序列的问题。
输出最长公共子序列
|
|
如果发现更优代码,欢迎留言。保存为模版,方便使用吧!
转载请注明出处,谢谢。
愿 我是你的小太阳